home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / Object.s < prev    next >
Text File  |  1994-06-27  |  54KB  |  2,591 lines

  1. ;object
  2.  
  3. rout            ;when this is off, the routine-file will be
  4.             ;assembled, on=testing
  5.             
  6. ;debug            ;when this is on, colors in the background will
  7.             ;show how much time the routine needs.
  8.  
  9. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  10.  
  11. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  12.  
  13. routinemode    equ    14431    ;the routinemode !
  14.  
  15.  
  16. ; VideoTracker AGA developer source 25-12-93
  17. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  18. ; wich makes low-resolution overscan a bit ugly.
  19. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  20.  
  21. ; the first part of the source handles the things that are necessary to
  22. ; show the picture/copper and playing of the routine.
  23. ; the part between the "***" lines is the routine-source.
  24. ; at the bottom of the file, there are the necessary incbin-files who
  25. ; are needed to test the routine.
  26. ; these are saved with "save effect" in videotracker. they are raw
  27. ; data files which can be fonts,pictures,landscapes,vectorobjects
  28. ; etcetra.
  29. ; the incbin-files are put in the "variables" table, in the routine-
  30. ; player-handler
  31. ; the place where it's done can be found by searching for "!!!"
  32.  
  33.     opt    a+    ;devpac 3 optimize
  34.     opt    o+
  35.  
  36. vew_wid    equ    48
  37. vew_hgt    equ    290
  38. win_hgt    equ    117
  39. win_str    equ    $1a
  40.  
  41.         ifd    ocs
  42. pic_wid        equ    4        ;wide in bytes
  43. pic_hgt        equ    6        ;hoogte
  44. pic_dpt        equ    8        ;number planes
  45. pic_ani        equ    10        ;aantal effes (anim)
  46. pic_vew        equ    12        ;viewmode
  47. pic_cycstr    equ    14        ;cycle start (*4)
  48. pic_cycend    equ    15        ;cycle end (*4)
  49. pic_cycspd    equ    16        ;cycle speed (*4)
  50. pic_cycadd    equ    17        ;cycle add (*4)
  51. pic_palnum    equ    30        ;aantal kleuren
  52. pic_pal        equ    32        ;palette start
  53. pic_palsiz    equ    256*2        ;vaste palette size
  54. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  55.         endc
  56.         
  57.         ifnd    ocs
  58. pic_wid        equ    4        ;wide in bytes
  59. pic_hgt        equ    6        ;hoogte
  60. pic_dpt        equ    8        ;number planes
  61. pic_ani        equ    10        ;aantal effes (anim)
  62. pic_vew        equ    12        ;viewmode
  63. pic_cycstr    equ    14        ;cycle start (*8)
  64. pic_cycend    equ    15        ;cycle end (*8)
  65. pic_cycspd    equ    16        ;cycle speed (*8)
  66. pic_cycadd    equ    17        ;cycle add (*8)
  67. pic_widmod    equ    46        ;animation-width modulo
  68. pic_future    equ    50        ;free future space
  69. pic_palnum    equ    62        ;aantal kleuren
  70. pic_pal        equ    64        ;palette start
  71. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  72. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  73.         endc
  74.         
  75. var_len        equ    $300        ;lengte vartabel
  76.  
  77. var__GfxBase    equ    $000        ;graphics lib
  78. var_pic1    equ    $004        ;current picture
  79. var_anispd1    equ    $008        ;animspeed
  80. var_anitel1    equ    $00c        ;animcount
  81. var_cprbck    equ    $010        ;copperback
  82. var_bck        equ    $014        ;background
  83. var_pic2    equ    $018        ;current picture
  84. var_ntsc    equ    $01c        ;ntsc/pal frequence
  85. var_lnd        equ    $020        ;landscape
  86. var_anilop1    equ    $024
  87. var_rottrg    equ    $028        ;effect trigger
  88. var_txt1    equ    $040        ;text
  89. var_txt16    equ    15*4+var_txt1
  90. var_vec1    equ    $080        ;vectors
  91. var_vec16    equ    15*4+var_vec1
  92. var_fon1    equ    $0c0        ;fonts
  93. var_fon16    equ    15*4+var_fon1
  94. var_cols1    equ    $100        ;colorsets
  95. var_cols16    equ    15*4+var_cols1
  96. var_obj1    equ    $180        ;objects
  97. var_obj16    equ    15*4+var_obj1
  98.  
  99.     ifd    rout
  100.     ;videotracker routine-test
  101.  
  102.     incdir    "w:include/"
  103.     include    "exec/types.i"
  104.     include    "graphics/gfxbase.i"
  105.     include    "lvo/graphics_lib.i"
  106.     incdir    'videotracker:effect/'
  107.  
  108.     SECTION    1,CODE_C
  109. tus
  110.     lea    var,a0
  111.     move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  112.     move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  113.  
  114. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  115. ;    move.l    #rotsrc,curpic1        ;picture !!!
  116. ;    move.l    #rotsrc,curpal1        ;palette !!!
  117. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  118.  
  119.     bsr    paltabres
  120.  
  121.     move.l    ($4).w,a6
  122.     sub.l    a1,a1
  123.     jsr    -$126(a6)        ;findtask
  124.     move.l    d0,curtsk
  125.     move.l    d0,a0
  126.     move.l    $b8(a0),tskpri
  127.  
  128.     lea    dosnam,a1        ;doslib openen
  129.     moveq.l    #0,d0
  130.     move.l    (4).w,a6
  131.     jsr    -408(a6)        ;openlib
  132.     move.l    d0,doslib
  133.  
  134.     bsr.s    label5            ;videotracker opstarten
  135.     
  136.     move.l    curtsk,a0
  137.     move.l    tskpri,$b8(a0)
  138.     move.l    ($4).w,a6
  139.     jsr    -$84(a6)        ;forbid
  140.  
  141.     move.l    doslib,a1
  142.     move.l    (4).w,a6
  143.     jsr    -414(a6)        ;closelib
  144.  
  145.     moveq.l    #0,d0
  146.     rts
  147.     
  148. label5
  149.     move.l    (4).w,a6        ;workbench gedoe
  150.  
  151.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  152.  
  153.     ifd    ntsctest
  154.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  155.     endc
  156.  
  157.     cmp.b    #50,ntscmode        ;ntsc ?
  158.     beq.s    str.ntsc
  159.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  160. str.ntsc
  161.  
  162.     lea    cprjmp,a2        ;copjmp zetten !
  163.     move.l    #cprbck-8,d0
  164.     move.w    d0,6(a2)
  165.     swap    d0
  166.     move.w    d0,2(a2)
  167.  
  168.     lea    cprbck-8,a2        ;copstr zetten !
  169.     move.l    #cpr,d0
  170.     move.w    d0,6(a2)
  171.     swap    d0
  172.     move.w    d0,2(a2)
  173.  
  174.     bsr    cprsprrem        ;sprites legen
  175.  
  176.     lea    gfxnam,a1        ;graphics lib openen
  177.     move.l    (4).w,a6
  178.     jsr    -408(a6)        ;openlib
  179.     move.l    d0,a6
  180.     move.l    d0,gfxlib
  181.     move.l    38(a6),oldcprlist
  182.  
  183.     bset    #1,$bfe001
  184.     bsr    copbuf            ;copper vullen
  185.  
  186.     bsr    sysoff
  187.  
  188. gadrun
  189.     btst    #6,($bfe001).l
  190.     bne    gadrun
  191.  
  192. scrend
  193. scrend.play
  194.     bsr    syson
  195.  
  196.     move.l    gfxlib,a1
  197.     move.l    (4).w,a6
  198.     jsr    -414(a6)        ;closelib
  199.  
  200. scrend.qb
  201.     moveq.l    #0,d0    
  202.     rts
  203.     
  204.     ;vertical blank interrupt, no blits.
  205.     ;handles counters,interlace,sprite
  206.     ;level 3
  207.  
  208. intvb
  209.     bra.s    intvb.cnt
  210.     dc.l    'VIDU'
  211.     dc.l    'LOOP'
  212. intvb.cnt
  213.     movem.l    d0-d7/a0-a6,-(sp)
  214.     lea    ($dff000).l,a6
  215.  
  216.     move.w    $01e(a6),d0
  217.     btst    #5,d0            ;vblank ?
  218.     bne.s    intvb.vb
  219.  
  220.     bra.s    intcop.end
  221.  
  222. intvb.vb
  223.     bsr    grap
  224.     bsr    palctr            ;palette zetten
  225.     bsr.s    copbuf            ;copper vullen
  226.     
  227. intvb.end
  228.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  229.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  230.     rte
  231.  
  232. intcop.end
  233.     movem.l    (sp)+,d0-d7/a0-a6
  234.     move.l    intvbold,-(sp)
  235.     rts
  236.  
  237.     ;transmission buffer empty routine, BLIT !
  238.     ;handles routines,animations
  239.     
  240. inttbe                    ;tbe interrupt
  241.     movem.l    d0-d7/a0-a6,-(sp)
  242.     lea    ($dff000).l,a6
  243.  
  244.     move.w    $01e(a6),d0
  245.     btst    #0,d0            ;no tbe ?
  246.     beq.s    intdskblk
  247.  
  248.  
  249.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  250.     beq.s    inttbe.cop
  251.     btst    #2,($dff016).l
  252.     beq.s    inttbe.cop
  253.  
  254.     ifd    debug
  255.     move.w    #$700,$dff180
  256.     endc
  257.     
  258.     bsr    rotply            ;routineplayer BLIT !
  259.     bsr.s    copbuf            ;copper vullen
  260.  
  261.     ifd    debug
  262.     move.w    #$070,$dff180
  263.     endc
  264.     
  265. inttbe.cop
  266.  
  267. inttbe.end
  268.     move.w    #$0001,$09c(a6)
  269.     movem.l    (sp)+,d0-d7/a0-a6
  270.     rte
  271.  
  272. intdskblk
  273.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  274.     movem.l    (sp)+,d0-d7/a0-a6
  275.     move.l    inttbeold,-(sp)
  276.     rts
  277.  
  278.  
  279.     ;moves the copperbuffer to the copperlist
  280.     ;sort of double buffering
  281.     
  282. copbuf
  283.     movem.l    d0-d7/a0-a6,-(sp)
  284.  
  285.     lea    ($dff000).l,a6
  286.  
  287. copbuf.novb                ;copperchange overslaan
  288.     moveq.l    #0,d0
  289.     move.b    $005(a6),d0
  290.     lsl.w    #8,d0
  291.     moveq.l    #0,d1
  292.     move.b    $006(a6),d1
  293.     add.w    d1,d0
  294.  
  295.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  296.     blt    copbuf.novb
  297.  
  298.     cmp.b    #50,ntscmode
  299.     beq.s    copbuf.pal
  300.     cmp.w    #$133-72-8,d0        ;ntsc grens
  301.     bge    copbuf.novb
  302.     bra.s    copbuf.cont
  303. copbuf.pal
  304.     cmp.w    #$133-8,d0        ;pal grens
  305.     bge    copbuf.novb
  306. copbuf.cont
  307.  
  308.     lea    gra.s,a0        ;buffer copieren
  309.     lea    cprbuf,a1
  310. copbuf_aga                ;AGA stuff :)
  311.     move.l    #(gra.ql)/4-1,d0
  312. copbuf.a
  313.     move.w    2(a0),2(a1)
  314.     add.l    #4,a0
  315.     add.l    #4,a1
  316.     dbra    d0,copbuf.a
  317.  
  318. copbuf.end
  319.     movem.l    (sp)+,d0-d7/a0-a6
  320.     rts
  321.  
  322.     ;goes back to the workbench
  323.     
  324. syson
  325.     movem.l    d0-d7/a0-a6,-(sp)
  326.  
  327.     move.w    #$0001,$dff09a        ;tbeint uit
  328.     move.l    intvbold,($6c).w
  329.     move.l    inttbeold,($64).w
  330.  
  331.     move.l    4,a6
  332.     jsr    -138(a6)        ;permit
  333.  
  334.     move.l    gfxlib,a6
  335.     jsr    -462(a6)        ;disownblitter
  336.  
  337.     move.l    wbview,a1
  338.     move.l    gfxlib,a6
  339.     jsr    _LVOLoadView(a6)     ; Fix view
  340.     jsr    _LVOWaitTOF(a6)
  341.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  342.  
  343. syson.ras
  344.     cmp.b    #$c0,$dff006        ;prevent copperjump
  345.     bne    syson.ras
  346.  
  347.     move.l    gfxlib,a6
  348.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  349.  
  350.     movem.l    (sp)+,d0-d7/a0-a6
  351.     rts
  352.     
  353.     ;goes back to the gadgetscreen
  354.     
  355. sysoff
  356.     movem.l    d0-d7/a0-a6,-(sp)
  357.      
  358.     move.l    gfxlib,a6
  359.     move.l    gb_ActiView(a6),wbview    ;current view
  360.     sub.l    a1,a1            ; clear a1
  361.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  362.     jsr    _LVOWaitTOF(a6)     ; Wait once
  363.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  364.  
  365.     move.l    gfxlib,a6
  366.     jsr    -456(a6)        ;ownblitter
  367.  
  368.     move.l    4,a6
  369.     jsr    -132(a6)        ;forbid
  370.         
  371.     move.l    ($6c).w,intvbold
  372.     move.l    #intvb,($6c).w
  373.     move.l    ($64).w,inttbeold
  374.     move.l    #inttbe,($64).w
  375.     move.w    #$8001,$dff09a        ;tbeint aan
  376.     bsr    gracpr            ;reset copper
  377.     bsr    copbuf            ;copy copper
  378.     move.l    #cpr,$dff080
  379.  
  380.     movem.l    (sp)+,d0-d7/a0-a6
  381.     rts
  382.     
  383. cprsprrem
  384.     movem.l    d0-d7/a0-a6,-(sp)
  385.     lea    cprspr,a0
  386.     move.l    #sprdat,d0
  387.     move.w    #7,d1
  388. cprsprrem.a
  389.     move.w    d0,3*2(a0)
  390.     swap    d0
  391.     move.w    d0,1*2(a0)
  392.     swap    d0
  393.     add.l    #8,a0
  394.     dbra    d1,cprsprrem.a
  395.     movem.l    (sp)+,d0-d7/a0-a6
  396.     rts
  397.  
  398. varset                    ;variablen neerzetten
  399.     movem.l    d0-d7/a0-a6,-(sp)
  400.     move.l    #var,a0
  401.  
  402.     move.l    #cprbck,var_cprbck(a0)
  403.     move.l    gfxlib,var__GfxBase(a0)
  404.     move.b    ntscmode,var_ntsc(a0)
  405.  
  406.     move.l    curpic1,var_pic1(a0)    ;variabel
  407.     move.l    curpic2,var_pic2(a0)    ;variabel
  408.     move.w    anispd1,var_anispd1(a0)
  409.     move.w    anitel1,var_anitel1(a0)
  410.     move.b    anilop1,var_anilop1(a0)
  411.     move.l    #rottrg,var_rottrg(a0)
  412.     movem.l    (sp)+,d0-d7/a0-a6
  413.     rts
  414.     
  415.     ;this routine handles all videotracker-routines
  416.  
  417. rotply    
  418.     movem.l    d0-d7/a0-a6,-(sp)
  419.  
  420.     moveq.l    #0,d0
  421.  
  422.     lea    currot1,a2        ;routine 1
  423.     move.w    rotinf1,d0        ;routine info
  424.     bsr.s    rotplyr
  425.  
  426. rotply.end
  427.     movem.l    (sp)+,d0-d7/a0-a6
  428.     rts
  429.  
  430.     ;this routine handles 1 routine, BLIT !
  431.     
  432. rotplyr
  433.     movem.l    d0-d7/a1-a6,-(sp)
  434.  
  435.     move.l    #rot,(a2)        ;routinestart address
  436.  
  437. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  438.     clr.l    curpic2            ;background picture
  439.     move.w    #1,anispd1        ;animationspeed
  440.     clr.w    anitel1            ;animation position
  441.  
  442.     lea    var,a0            ;communication-table
  443.  
  444.     move.b    #0,anilop1        ;animloop off/on !!!
  445.     move.w    #32,anispd1        ;animdelay !!!
  446.     move.l    #routinemode,d0        ;routinemode !!!
  447.  
  448.     sub.l    a0,a0            ;picture info legen
  449.  
  450.     tst.l    (a2)            ;is er een routine ?
  451.     beq    rotplyr.end        ;interlace handling
  452.  
  453.     move.l    intdel,d2        ;delay
  454.     move.l    inttel,d1        ;teller
  455.     cmp.w    d2,d1
  456.     blt    rotplyr.end
  457.     clr.l    inttel
  458.                 
  459.     bsr    varset            ;variabelen updaten
  460.  
  461.     move.l    (a2),a1            ;routine halen
  462.     move.l    #var,a0            ;variablen tabel
  463.  
  464.     movem.l    d3-d7/a1-a6,-(sp)
  465.     moveq.l    #0,d1            ;vars wissen
  466.     moveq.l    #0,d2
  467.     moveq.l    #0,d3
  468.     moveq.l    #0,d4
  469.     moveq.l    #0,d5
  470.     moveq.l    #0,d6
  471.     moveq.l    #0,d7
  472.     sub.l    a2,a2
  473.     sub.l    a3,a3
  474.     sub.l    a4,a4
  475.     sub.l    a5,a5
  476.  
  477.     jsr    4(a1)            ;routine afwerken
  478.     movem.l    (sp)+,d3-d7/a1-a6
  479.  
  480.     ;Routine:
  481.     ;
  482.     ;Input:
  483.     ;a0=variabelentabel
  484.     ;d0=routinemode
  485.     ;
  486.     ;Output:
  487.     ;a0=picture
  488.     ;d1=copperlist
  489.     ;d2=interruptdelay        (NOT used till now)
  490.     
  491.     move.w    #$0020,$dff09a        ;vb off !
  492.  
  493.     move.l    d2,intdel        ;delay
  494.  
  495.     lea    cprjmp,a3
  496.     move.l    #cprbck-8,d0
  497.  
  498.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  499.     bne.s    rotplyr.nocop
  500.     tst.l    d1            ;copperlist ?
  501.     beq.s    rotplyr.nocop
  502.     move.l    d1,d0
  503. rotplyr.nocop
  504.     move.w    d0,6(a3)
  505.     swap    d0
  506.     move.w    d0,2(a3)
  507.  
  508.     cmp.l    #0,a0            ;picture ?
  509.     beq.s    rotplyr.endvb
  510.  
  511.     move.l    a0,curpic1        ;current picture (cycle)
  512.     move.l    a0,curpal1        ;current palette
  513.  
  514.     tst.b    rotdpl            ;plane is geleverd
  515.     beq.s    rotplyr.set
  516.     clr.b    rotdpl
  517.     clr.l    cycdel1            ;cycle info wissen
  518.     clr.l    4+cycdel1
  519.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  520. rotplyr.set
  521.     clr.b    dplctr
  522.     bsr.s    grap
  523.     bsr    grac            ;colorset
  524. rotplyr.endvb
  525.     move.w    #$8020,$dff09a
  526. rotplyr.end
  527.     movem.l    (sp)+,d0-d7/a1-a6
  528.     rts
  529.  
  530.     ;removes possible routine-coppers
  531.     
  532. gracpr
  533.     movem.l    d0-d7/a0-a6,-(sp)
  534.     lea    cprjmp,a3
  535.     move.l    #cprbck-8,d0        ;copperlist resetten
  536.     move.w    d0,6(a3)
  537.     swap    d0
  538.     move.w    d0,2(a3)
  539.     movem.l    (sp)+,d0-d7/a0-a6
  540.     rts
  541.  
  542. grap                    ;d7=anim
  543.     movem.l    d0-d7/a0-a6,-(sp)
  544.  
  545.     clr.l    d7
  546.  
  547.     tst.l    curpic1            ;current picture ?
  548.     beq    grap.end
  549.  
  550.     move.l    curpic1,a2        ;normal pic halen
  551.  
  552.     lea    gracprscr,a1        ;window neerzetten
  553.     move.l    hogscr,d1
  554.  
  555.     move.w    pic_hgt(a2),d3        ;pic hoogte
  556.     move.w    pic_vew(a2),d5
  557.     btst    #2,d5            ;interlace ?
  558.     beq.s    grap.nohi4
  559.     lsr.w    #1,d3            ;/2
  560. grap.nohi4
  561.     cmp.w    d3,d1
  562.     bge.s    grap.hog
  563.     move.w    d1,d3
  564. grap.hog
  565.     sub.w    d3,d1
  566.     lsr.w    #1,d1
  567.     add.w    #win_str,d1
  568.     move.w    d1,d2
  569.     add.w    d3,d2
  570.  
  571.     move.b    d1,2(a1)        ;y start
  572.     move.b    d2,6(a1)        ;y end
  573.  
  574.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  575.     lsl.l    #3,d4
  576.  
  577.     move.l    #vew_wid*8,d0
  578.     move.l    #0,d1
  579.     move.l    #$61,d6
  580.  
  581.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  582.     ble.s    grap.noov1
  583.     move.l    #$41,d6
  584. grap.noov1
  585.  
  586.     move.w    pic_vew(a2),d5
  587.     btst    #15,d5            ;hires ?
  588.     beq.s    grap.nohi2
  589.  
  590.     move.l    #(vew_wid)*8*2,d0
  591.     move.l    #1,d1
  592.     move.l    #$61,d6
  593.  
  594.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  595.     ble.s    grap.nohi2
  596.     move.l    #(vew_wid)*8*2,d0
  597.     move.l    #$51,d6
  598.  
  599.     bra.s    grap.noshi2
  600. grap.nohi2    
  601.     btst    #6,d5            ;super hires ?
  602.     beq.s    grap.noshi2
  603.  
  604.     move.l    #(vew_wid)*8*4,d0
  605.     move.l    #2,d1
  606.     move.l    #$61,d6
  607.  
  608.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  609.     ble.s    grap.noshi2
  610.     move.l    #(vew_wid)*8*4,d0
  611.     move.l    #$51,d6
  612.  
  613. grap.noshi2    
  614.  
  615.     clr.w    d5
  616.     cmp.w    d0,d4            ;breeder dan scherm ?
  617.     ble.s    grap.c
  618.     move.w    d4,d5
  619.     move.w    d0,d4
  620.     sub.w    d0,d5            ;modulo
  621.     lsr.w    #3,d5            ;/8
  622. grap.c
  623.     lsr.w    d1,d0
  624.     lsr.w    d1,d4
  625.  
  626.     move.w    d0,d2
  627.     sub.w    d4,d2
  628.     lsr.w    #1,d2            ;/2
  629.  
  630.     add.w    d6,d2
  631.     move.b    d2,3(a1)        ;x start
  632.     move.w    d2,d3            ;d3 bewaren !
  633.  
  634.     add.w    d4,d2            ;d4 bewaren !
  635.     move.b    d2,7(a1)        ;x end
  636.     
  637.     move.w    pic_vew(a2),d6
  638.     btst    #15,d6            ;hires ?
  639.     beq.s    grap.nohi5    
  640.     add.l    d4,d4            ;*2
  641.     bra.s    grap.noshi5
  642. grap.nohi5
  643.     btst    #6,d6            ;super hires ?
  644.     beq.s    grap.noshi5    
  645.     add.l    d4,d4            ;*4
  646.     add.l    d4,d4
  647. grap.noshi5
  648.  
  649.     move.l    d7,-(sp)
  650.     move.w    pic_vew(a2),d6
  651.     move.l    #17,d0
  652.     move.l    #4,d1            ;ecs 1
  653.     move.l    #3,d7
  654.  
  655.     btst    #15,d6            ;hires ?
  656.     beq.s    grap.nohi3    
  657.     move.l    #17,d0            ;ecs 9
  658.     move.l    #4,d1            ;ecs 2
  659.     move.l    #2,d7
  660.     bra.s    grap.noshi3
  661. grap.nohi3
  662.     btst    #6,d6            ;super hires ?
  663.     beq.s    grap.noshi3    
  664.     move.l    #17,d0            ;ecs 9
  665.     move.l    #4,d1            ;ecs 2
  666.     move.l    #1,d7
  667. grap.noshi3
  668.     sub.w    d0,d3
  669.     lsr.w    #1,d3
  670.     move.w    d3,10(a1)        ;ddfstrt
  671.     
  672.     move.w    d4,d2            ;pic breedte in pixels
  673.     lsr.w    #4,d2            ;/16
  674.     sub.w    d1,d2            ;-1
  675.  
  676.     lsl.w    d7,d2            ;*8
  677.     add.w    d2,d3
  678.     move.w    d3,14(a1)        ;ddfstop
  679.     move.l    (sp)+,d7
  680.     
  681.     lea    pic_raw(a2),a0
  682.  
  683.     moveq.l    #0,d2
  684.     move.w    pic_dpt(a2),d2
  685.     sub.l    #1,d2
  686.     muls    pic_wid(a2),d2
  687.     add.w    d2,d5
  688.  
  689.     move.w    pic_vew(a2),d2        ;viewmode add
  690.     btst    #2,d2
  691.     beq.s    grap.nolace4
  692.  
  693.     moveq.l    #0,d2
  694.     move.w    pic_dpt(a2),d2
  695.     muls    pic_wid(a2),d2
  696.     add.w    d2,d5            ;interlace gedoe
  697. grap.nolace4
  698.  
  699.     lea    gracprbpl,a4        ;iffpln neerzetten
  700.     lea    gracprpln,a0        ;iffpln neerzetten
  701.     moveq.l    #0,d2
  702.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  703.     move.l    #8,d6            ;copper step !
  704.  
  705.     tst.l    curpic2            ;2de picture ?
  706.     bne.s    grap.pic2
  707. grap.nopic2
  708.     move.w    d5,34(a1)        ;modulo oneven zetten
  709.     bra    grap.nodpl
  710. grap.pic2
  711.     move.l    curpic2,a3        ;oneven plane
  712.     move.l    curpic2+4,a6        ;oneven plane
  713.     move.l    currot2,a5        ;oneven plane
  714.     clr.l    curpic2            ;mischien niet goed
  715.     clr.l    curpic2+4        ;mischien niet goed
  716.     clr.l    curpal2            ;mischien niet goed
  717.     clr.l    currot2            ;mischien niet goed
  718.  
  719.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  720.     beq.s    grap.nopic2
  721.     
  722.     cmp.l    #0,currot1        ;routine ?    
  723.     beq.s    grap.norot
  724.     cmp.l    currot1,a5        ;routine hetzelfde ?
  725.     beq.s    grap.nopic2
  726. grap.norot
  727.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  728.     bgt    grap.nopic2
  729.  
  730.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  731.     cmp.b    d2,d3            ;gelijke plnummers ?
  732.     bne.s    grap.nopic2
  733.     move.w    pic_vew(a2),d1
  734.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  735.     bne.s    grap.nopic2
  736.  
  737.     move.w    pic_vew(a2),d1        ;groter dan view test
  738.     btst    #6,d1            ;super hires ?
  739.     beq.s    grap.nohi2a
  740.     move.l    #vew_wid*4,d1
  741.     bra.s    grap.nohi2b
  742. grap.nohi2a
  743.     btst    #15,d1            ;hires ?
  744.     beq.s    grap.noshi2a
  745.     move.l    #vew_wid*2,d1
  746.     bra.s    grap.nohi2b
  747. grap.noshi2a
  748.     move.l    #vew_wid,d1
  749. grap.nohi2b
  750.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  751.     bgt.s    grap.small
  752.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  753.     bgt.s    grap.small
  754.  
  755.     move.w    pic_vew(a2),d1
  756.     btst    #2,d1
  757.     beq.s    grap.nolace8a
  758.     move.l    hogscr,d1
  759.     add.l    d1,d1
  760.     bra.s    grap.nolace8b
  761. grap.nolace8a
  762.     move.l    hogscr,d1
  763. grap.nolace8b
  764.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  765.     bgt.s    grap.small
  766.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  767.     bgt.s    grap.small
  768.     bra.s    grap.big
  769.  
  770. grap.small
  771.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  772.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  773.     bne    grap.nopic2
  774.     move.w    pic_wid(a2),d1
  775.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  776.     bne    grap.nopic2
  777.  
  778. grap.big
  779.     move.l    a3,curpic2        ;toch wel goed !
  780.     move.l    a6,curpic2+4
  781.     move.l    a3,curpal2
  782.     move.l    a5,currot2
  783.  
  784.     tst.b    dplctr            ;dual playfield al gezet ?
  785.     beq    grap.nocop
  786.  
  787.     move.w    30(a1),34(a1)        ;modulo copieren
  788.  
  789.     move.w    2(a4),d1        ;bplcon0
  790.     btst    #10,d1            ;al dual playfield ?
  791.     beq.s    grap.ta
  792.  
  793.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  794.     move.w    6(a0),14(a0)
  795.  
  796.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  797.     move.w    22(a0),30(a0)
  798.  
  799.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  800.     move.w    38(a0),46(a0)
  801.  
  802.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  803.     move.w    54(a0),62(a0)
  804.  
  805.     bra.s    grap.tb
  806. grap.ta
  807.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  808.     move.w    28(a0),62(a0)
  809.  
  810.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  811.     move.w    22(a0),46(a0)
  812.  
  813.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  814.     move.w    14(a0),30(a0)
  815.  
  816.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  817.     move.w    6(a0),14(a0)
  818.  
  819. grap.tb
  820.     move.l    #palette,a3        ;palette copieren
  821.  
  822.     move.w    #16-1,d1
  823. grap.pal
  824.     move.l    (a3)+,60(a3)
  825.     dbra    d1,grap.pal
  826.  
  827. grap.nocop
  828.     add.w    d3,d2            ;aantal bitplanes
  829.     cmp.w    #8,d2            ;8 bitplanes ?
  830.     blt    grap.no8planes2
  831.     move.w    #%10000,d2        ;only bit 4
  832.     bra    grap.8planes2
  833. grap.no8planes2
  834.     lsl.w    #8,d2
  835.     lsl.w    #4,d2
  836. grap.8planes2
  837.     or.w    #$400,d2        ;dual playfield aan
  838.     move.w    d2,2(a4)        ;bplcon0
  839.  
  840.     movem.l    d0-d7/a0-a6,-(sp)
  841.  
  842.     move.l    curpic,a2        ;animpic ?
  843.     move.l    curfrm,d7
  844.     cmp.l    #0,a2
  845.     bne.s    grap.noanipic
  846.  
  847.     move.l    curpic2,a2        ;normal pic ?
  848.     move.l    curfrm2,d7
  849.     cmp.l    #0,a2
  850.     beq.s    grap.nodplpic
  851.  
  852. grap.noanipic
  853.     add.l    d6,a0
  854.     add.w    d6,d6
  855.     bsr.s    grappln            ;a2,d6,d7,d0
  856. grap.nodplpic
  857.     movem.l    (sp)+,d0-d7/a0-a6
  858.     add.w    d6,d6
  859.     bra.s    grap.nodpla
  860.  
  861.  
  862. grap.nodpl                ;geen dual playfield
  863.     cmp.w    #8,d2            ;8 bitplanes ?
  864.     blt    grap.no8planes
  865.     move.w    #%10000,d2        ;only bit 4
  866.     bra    grap.8planes
  867. grap.no8planes
  868.     lsl.w    #8,d2
  869.     lsl.w    #4,d2
  870. grap.8planes
  871.     move.w    d2,2(a4)        ;bplcon0
  872.  
  873. grap.nodpla
  874.     move.w    d5,30(a1)        ;modulo even
  875.  
  876.     moveq.l    #0,d3
  877.     add.w    pic_vew(a2),d3        ;viewmode add
  878.     moveq.l    #0,d2
  879.     move.w    2(a4),d2
  880.     or.l    d3,d2
  881.  
  882.     ifd    gui
  883.     tst.b    genlck
  884.     bne    grap.genset
  885.     endc
  886.  
  887.     or.l    #$100,d2        ;genlock off ($302)
  888.  
  889.     ifd    gui
  890.     bra    grap.gencont
  891. grap.genset
  892.     or.l    #$102,d2        ;genlock on ($302)
  893. grap.gencont
  894.     endc
  895.     
  896.     move.w    d2,2(a4)
  897.     
  898.     bsr.s    grappln            ;a2,d6,d7,d0
  899.  
  900. grap.end
  901.     
  902.     movem.l    (sp)+,d0-d7/a0-a6
  903.     rts
  904.         
  905.  
  906.     ;sets on of the 2 possible pictures to the copper
  907.     ;handles interlace
  908.  
  909.     ;d7=framenummer
  910.     ;d6=copperliststap
  911.     ;d0=raw planes positie
  912.     ;a2=current picture
  913. grappln                    ;planes invullen 
  914.     movem.l    d0-d7/a0-a6,-(sp)
  915.  
  916.     lea    pic_raw(a2),a1
  917.     move.l    a1,d0            ;raw planes
  918.     
  919.     moveq.l    #0,d2            ;x*y
  920.     move.w    pic_wid(a2),d2
  921.     lsr.l    #1,d2            ;/2
  922.     moveq.l    #0,d3
  923.     move.w    pic_hgt(a2),d3
  924.     muls    d3,d2
  925.     
  926.     move.l    d2,d4
  927.     add.l    d2,d2
  928.  
  929.     move.w    pic_dpt(a2),d3
  930.     muls    d3,d4            ;hele picture size
  931.     muls    d7,d4            ;frame*size d7 !!!
  932.  
  933.     add.l    d4,d4
  934.  
  935.     add.l    d4,d0
  936.  
  937.     move.l    #vew_wid,d5        ;max x view
  938.     move.l    hogscr,d4        ;max y view
  939.     move.w    pic_vew(a2),d1        ;viewmode add
  940.     btst    #2,d1
  941.     beq.s    grappln.nolace
  942.     add.l    d4,d4            ;max y view
  943. grappln.nolace
  944.     btst    #15,d1            ;hires ?
  945.     beq.s    grappln.nohi
  946.     move.l    #vew_wid*2,d5        ;max x view
  947.     bra.s    grappln.noshi
  948. grappln.nohi
  949.     btst    #6,d1            ;super hires ?
  950.     beq.s    grappln.noshi
  951.     move.l    #vew_wid*4,d5        ;max x view
  952. grappln.noshi
  953.  
  954.     moveq.l    #0,d3            ;scherm centreren
  955.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  956.     cmp.w    d5,d3            ;breder dan scherm ?
  957.     ble.s    grappln.qa
  958.     sub.w    d5,d3            ;-scherm breedte
  959.     lsr.w    #2,d3            ;/4
  960.  
  961.     add.l    d3,d3
  962.  
  963.     add.l    d3,d0
  964. grappln.qa
  965.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  966.     cmp.w    d4,d3            ;hoger dan scherm ?
  967.     ble.s    grappln.qb
  968.     sub.w    d4,d3            ;-scherm breedte
  969.     lsr.w    #1,d3            ;/2
  970.     moveq.l    #0,d5
  971.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  972.     muls    pic_dpt(a2),d5
  973.     muls    d5,d3
  974.     add.l    d3,d0
  975. grappln.qb
  976.     moveq.l    #0,d2
  977.     move.w    pic_wid(a2),d2
  978.  
  979.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  980.     btst    #2,d5
  981.     beq.s    grappln.nolac7b
  982.  
  983.     move.w    $04(a6),d5        ;even/oneven ?
  984.     btst    #15,d5
  985.     beq.s    grappln.nolac7b
  986.     
  987.     moveq.l    #0,d3
  988.     move.w    pic_wid(a2),d3
  989.     muls    pic_dpt(a2),d3
  990.     add.l    d3,d0
  991. grappln.nolac7b
  992.  
  993.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  994.     tst.w    d1            ;0 planes ?
  995.     beq    grappln.end
  996.     sub.w    #1,d1
  997. grappln.a
  998.     move.w    d0,3*2(a0)
  999.     swap    d0
  1000.     move.w    d0,1*2(a0)
  1001.     swap    d0
  1002.     add.l    d6,a0            ;d6=copper step !
  1003.     add.l    d2,d0
  1004.     dbra    d1,grappln.a
  1005.  
  1006.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1007.     bne    grappln.noham8
  1008.     btst    #3,pic_vew(a2)        ;ham ?
  1009.     beq    grappln.noham8
  1010.  
  1011.     move.w    -14(a0),d0        ;get 6
  1012.     move.w    -10(a0),d1
  1013.     move.w    -6(a0),d2        ;get 7
  1014.     move.w    -2(a0),d3
  1015.     move.w    -18(a0),-2(a0)        ;5>7
  1016.     move.w    -22(a0),-6(a0)        ;5>7
  1017.     move.w    -26(a0),-10(a0)        ;4>6
  1018.     move.w    -30(a0),-14(a0)        ;4>6
  1019.     move.w    -34(a0),-18(a0)        ;3>5
  1020.     move.w    -38(a0),-22(a0)        ;3>5
  1021.     move.w    -42(a0),-26(a0)        ;2>4
  1022.     move.w    -46(a0),-30(a0)        ;2>4
  1023.     move.w    -50(a0),-34(a0)        ;1>3
  1024.     move.w    -54(a0),-38(a0)        ;1>3
  1025.     move.w    -58(a0),-42(a0)        ;0>2
  1026.     move.w    -62(a0),-46(a0)        ;0>2
  1027.     move.w    d0,-62(a0)        ;6>0
  1028.     move.w    d1,-58(a0)        ;6>0
  1029.     move.w    d2,-54(a0)        ;7>1
  1030.     move.w    d3,-50(a0)        ;7>1
  1031. grappln.noham8
  1032.  
  1033. grappln.end
  1034.     movem.l    (sp)+,d0-d7/a0-a6
  1035.     rts
  1036.  
  1037.     ;sets palettes to palette-buffer
  1038.     
  1039. grac
  1040.     movem.l    d0-d7/a0-a6,-(sp)
  1041.  
  1042.     lea    curpal1,a3        ;palette 1
  1043.     move.l    #palette,a1
  1044.     bsr.s    gracfrm
  1045.  
  1046.     lea    curpal2,a3        ;palette 2 (dpl)
  1047.     move.l    #16*4+palette,a1
  1048.     bsr.s    gracfrm
  1049.     
  1050.     bsr    palctr            ;palette-buffer to copper
  1051. grac.end
  1052.     movem.l    (sp)+,d0-d7/a0-a6
  1053.     rts
  1054.         
  1055.     ;moves palette from picture to palette-buffer
  1056.  
  1057. gracfrm
  1058.     movem.l    d0-d7/a0-a6,-(sp)
  1059.     tst.l    (a3)            ;palette aanwezig ?
  1060.     beq.s    gracfrm.end
  1061.  
  1062.     move.l    (a3),a2            ;current palette
  1063.     
  1064.     cmp.l    #'PALE',(a2)        ;palette ?
  1065.     bne.s    gracfrm.pict
  1066.     lea    6(a2),a0        ;palette
  1067.     move.w    4(a2),d0        ;aantal kleuren
  1068.     bra.s    gracfrm.col
  1069. gracfrm.pict
  1070.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1071.     bne.s    gracfrm.noanim
  1072.  
  1073.     moveq.l    #0,d1
  1074.     move.w    pic_ani(a2),d1
  1075.     bclr    #7,d1            ;behandelbit weghalen
  1076.  
  1077.     moveq.l    #0,d3
  1078.     move.w    pic_wid(a2),d3
  1079.     lsr.w    #1,d3            ;/2
  1080.     muls    pic_hgt(a2),d3
  1081.     muls    pic_dpt(a2),d3
  1082.  
  1083.     add.l    d3,d3
  1084.  
  1085.     add.l    #pic_raw,d3
  1086.     move.l    d3,d5
  1087.  
  1088.     btst    #0,d1
  1089.     bne.s    gracfrm.buf2
  1090.     moveq.l    #0,d5
  1091. gracfrm.buf2
  1092.     add.l    d5,a2
  1093. gracfrm.noanim
  1094.     lea    pic_pal(a2),a0        ;palette
  1095.     move.w    pic_palnum(a2),d0
  1096.  
  1097.     tst.w    d0            ;0 planes ?
  1098.     beq.s    gracfrm.end
  1099. gracfrm.col
  1100. gracfrm.fa
  1101.     move.l    (a0)+,(a1)+
  1102.     dbra    d0,gracfrm.fa
  1103. gracfrm.end
  1104.     movem.l    (sp)+,d0-d7/a0-a6
  1105.     rts
  1106.     
  1107.     ;handles colorcycling in the palette-buffer
  1108.  
  1109. palcycctr
  1110.     movem.l    d0-d7/a0-a6,-(sp)
  1111.  
  1112.     move.l    curpic1,a2        ;current raw
  1113.     cmp.l    #0,a2
  1114.     beq.s    palcycctr.qb
  1115.     lea    cycdel1,a3        ;cycle delays
  1116.     move.l    #paltab,a4
  1117.     bsr    palcyc
  1118. palcycctr.qb
  1119.     move.l    curpic2,a2        ;current raw
  1120.     cmp.l    #0,a2
  1121.     beq.s    palcycctr.c
  1122.     lea    cycdel2,a3        ;cycle delays
  1123.     move.l    #16*2+paltab,a4
  1124.     bsr    palcyc
  1125. palcycctr.c
  1126.     movem.l    (sp)+,d0-d7/a0-a6
  1127.     rts
  1128.     
  1129.     ;copies palette-buffer to copper
  1130.  
  1131. palctr
  1132.     movem.l    d0-d7/a0-a6,-(sp)
  1133.  
  1134.     lea    gracprcol,a1        ;AGA
  1135.     move.l    #palette,a0
  1136.     move.l    #paltab,a2
  1137.     move.w    #8-1,d6
  1138. palctr.e
  1139.     move.w    #32-1,d7
  1140. palctr.d
  1141.     move.w    (a2)+,d0            ;get cycle-position
  1142.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1143.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1144.     add.l    #4,a1
  1145.     dbra    d7,palctr.d
  1146.     add.l    #((32+2)*4),a1
  1147.     dbra    d6,palctr.e
  1148. palctr.end
  1149.     movem.l    (sp)+,d0-d7/a0-a6
  1150.     rts
  1151.  
  1152.     ;reset palette tabel, for proper color cycling
  1153.  
  1154. paltabres
  1155.     movem.l    d0-d7/a0-a6,-(sp)
  1156.     lea    paltab,a0
  1157.     clr.l    d0
  1158.     move.w    #256-1,d1
  1159. paltabres.a
  1160.     move.w    d0,(a0)+
  1161.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1162.     dbra    d1,paltabres.a
  1163. paltabres.end
  1164.     movem.l    (sp)+,d0-d7/a0-a6
  1165.     rts
  1166.  
  1167.     ;colorcyclinghandling of a palette
  1168.  
  1169. palcyc
  1170.     movem.l    d0-d7/a0-a6,-(sp)
  1171.     move.w    #4-1,d7            ;4 cycles
  1172. palcyc.d
  1173.     tst.w    (a3)+            ;delay klaar ?
  1174.     bne.s    palcyc.c
  1175.     
  1176.     moveq.l    #0,d1
  1177.     move.b    pic_cycstr(a2),d1    ;start color
  1178.     lsl.b    #1,d1        ;*2
  1179.  
  1180.     moveq.l    #0,d2
  1181.     move.b    pic_cycend(a2),d2    ;end color
  1182.     lsl.b    #1,d2        ;*2
  1183.  
  1184.     moveq.l    #0,d3
  1185.     move.b    pic_cycadd(a2),d3    ;richting
  1186.  
  1187.     move.l    a4,a0            ;palette pointer
  1188.     move.l    a0,a1
  1189.     add.l    d1,a0            ;startcolor
  1190.     add.l    d2,a1            ;endcolor
  1191.     
  1192.     cmp.b    #1,d3            ;omhoog
  1193.     beq.s    palcyc.up    
  1194.     cmp.b    #3,d3            ;omlaag
  1195.     beq.s    palcyc.down
  1196.     bra.s    palcyc.i
  1197.  
  1198. palcyc.up                ;kleuren copieren
  1199.     move.w    (a1),d4            ;laatst color bewaren
  1200. palcyc.f                ;kleuren copieren
  1201.     cmp.l    a0,a1
  1202.     beq.s    palcyc.fa
  1203.     move.w    -(a1),2(a1)
  1204.     bra.s    palcyc.f
  1205. palcyc.fa
  1206.     move.w    d4,(a1)
  1207.     bra.s    palcyc.g    
  1208.     
  1209. palcyc.down
  1210.     move.w    (a0),d4            ;laatst color bewaren
  1211. palcyc.h                ;kleuren copieren
  1212.     cmp.l    a0,a1
  1213.     beq.s    palcyc.ha
  1214.     move.w    2(a0),(a0)+
  1215.     bra.s    palcyc.h
  1216. palcyc.ha
  1217.     move.w    d4,(a1)
  1218.  
  1219. palcyc.g
  1220.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1221.     bra.s    palcyc.i
  1222. palcyc.c
  1223.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1224. palcyc.i
  1225.     add.l    #4,a2            ;next cycle info
  1226.     dbra    d7,palcyc.d
  1227.  
  1228. palcyc.qb
  1229.     movem.l    (sp)+,d0-d7/a0-a6
  1230.     rts
  1231.  
  1232.  
  1233.  
  1234. ;    SECTION    variabelen,DATA_c
  1235.  
  1236.     cnop    0,2
  1237. curtsk        dc.l    0
  1238. tskpri        dc.l    0
  1239. duplok        dc.l    0
  1240. inttel        dc.l    0
  1241. intdel        dc.l    0
  1242.  
  1243. form        dc.l    0
  1244. ifffil        dc.l    0
  1245. intvbold    dc.l    0
  1246. inttbeold    dc.l    0
  1247. patpos        dc.l    0
  1248. gfxlib        dc.l    0
  1249. doslib        dc.l    0
  1250. wbview      dc.l    0
  1251. mt_data        dc.l    0
  1252. memvid        dc.l    0
  1253. oldcprlist    dc.l    0
  1254. hogscr        dc.l    vew_hgt
  1255.  
  1256. inspos        dc.l    -1
  1257. anispd1        dc.w    1    ;nooit op 0 !
  1258. anispd2        dc.w    1
  1259.  
  1260.         cnop    0,2
  1261. varclr.s            ;start wissen
  1262. oldrot        dc.l    0
  1263. curpic        dc.l    0
  1264. curfrm        dc.l    0
  1265. cycdel1        ds.w    4
  1266. cycdel2        ds.w    4
  1267.  
  1268. rotinf1        dc.w    0
  1269. rotinf2        dc.w    0
  1270.  
  1271. effspd        dc.w    0
  1272. efflop        dc.b    0
  1273. anilop1        dc.b    0
  1274. anilop2        dc.b    0
  1275. anipal1        dc.b    0
  1276. anipal2        dc.b    0
  1277. rotdpl        dc.b    1
  1278. rottrg        dc.b    0
  1279. dplctr        dc.b    0
  1280.         cnop    0,2
  1281.  
  1282. insdat        ds.l    4
  1283. inspri        dc.l    0
  1284. instel        dc.w    0
  1285.  
  1286. cureff        dc.l    0
  1287. efftel        dc.w    0
  1288.  
  1289. curpal1        dc.l    0
  1290. curpal2        dc.l    0
  1291. currot1        dc.l    0
  1292. currot2        dc.l    0
  1293. curpic1        dc.l    0
  1294. curpic2        dc.l    0
  1295. anitel1        dc.w    0
  1296. anitel2        dc.w    0
  1297. curfrm1        dc.l    0
  1298. curfrm2        dc.l    0
  1299. oldfrm1        dc.l    0
  1300. oldfrm2        dc.l    0
  1301.  
  1302. varclr.e
  1303.         dc.l    0            ;wisruimte
  1304.     
  1305. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1306.     
  1307. ntscmode    dc.b    0
  1308. end        dc.b    0
  1309.  
  1310. pronam    dc.b    'VideoTracker',0
  1311.     cnop    0,2
  1312. dosnam    dc.b    'dos.library',0
  1313.     cnop    0,4
  1314. gfxnam    dc.b    'graphics.library',0
  1315.     cnop    0,4
  1316.     
  1317.     cnop    0,4
  1318. gra.s            ;copperlist edit buffer
  1319. gracprscr
  1320.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1321. gracprbpl
  1322.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1323.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1324. gracprpln
  1325.     dc.w    $e0,$0000,$e2,$0000    ;1
  1326.     dc.w    $e4,$0000,$e6,$0000    ;2
  1327.     dc.w    $e8,$0000,$ea,$0000    ;3
  1328.     dc.w    $ec,$0000,$ee,$0000    ;4
  1329.     dc.w    $f0,$0000,$f2,$0000    ;5
  1330.     dc.w    $f4,$0000,$f6,$0000    ;6
  1331.     dc.w    $f8,$0000,$fa,$0000    ;7
  1332.     dc.w    $fc,$0000,$fe,$0000    ;8
  1333. gracprcol
  1334.     dc.w    $106,$0000
  1335.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1336.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1337.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1338.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1339.     dc.w    $106,$0200
  1340.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1341.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1342.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1343.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1344.  
  1345.     dc.w    $106,$2000
  1346.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1347.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1348.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1349.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1350.     dc.w    $106,$2200
  1351.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1352.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1353.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1354.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1355.  
  1356.     dc.w    $106,$4000
  1357.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1358.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1359.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1360.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1361.     dc.w    $106,$4200
  1362.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1363.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1364.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1365.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1366.  
  1367.     dc.w    $106,$6000
  1368.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1369.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1370.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1371.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1372.     dc.w    $106,$6200
  1373.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1374.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1375.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1376.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1377.  
  1378.     dc.w    $106,$8000
  1379.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1380.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1381.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1382.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1383.     dc.w    $106,$8200
  1384.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1385.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1386.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1387.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1388.  
  1389.     dc.w    $106,$a000
  1390.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1391.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1392.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1393.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1394.     dc.w    $106,$a200
  1395.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1396.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1397.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1398.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1399.  
  1400.     dc.w    $106,$c000
  1401.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1402.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1403.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1404.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1405.     dc.w    $106,$c200
  1406.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1407.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1408.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1409.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1410.  
  1411.     dc.w    $106,$e000
  1412.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1413.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1414.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1415.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1416.     dc.w    $106,$e200
  1417.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1418.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1419.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1420.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1421.  
  1422.     dc.w    $106,$1000
  1423.  
  1424. cprjmp
  1425.     dc.w    $080,0,$082,0
  1426. gra.e
  1427. gra.ql    equ    gra.e-gra.s        ;block lengte
  1428.  
  1429. cpr                    ;real copperlist
  1430.     dc.w    $0001,$fffe
  1431.     dc.w    $09c,$8001        ;tbeint
  1432. cprspr
  1433.     dc.w    $120,$0000,$122,$0000
  1434.     dc.w    $124,$0000,$126,$0000
  1435.     dc.w    $128,$0000,$12a,$0000
  1436.     dc.w    $12c,$0000,$12e,$0000
  1437.     dc.w    $130,$0000,$132,$0000
  1438.     dc.w    $134,$0000,$136,$0000
  1439.     dc.w    $138,$0000,$13a,$0000
  1440.     dc.w    $13c,$0000,$13e,$0000
  1441.  
  1442. cprbuf
  1443.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1444.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1445.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1446.  
  1447.     dc.w    $e0,$0000,$e2,$0000    ;0
  1448.     dc.w    $e4,$0000,$e6,$0000    ;1
  1449.     dc.w    $e8,$0000,$ea,$0000    ;2
  1450.     dc.w    $ec,$0000,$ee,$0000    ;3
  1451.     dc.w    $f0,$0000,$f2,$0000    ;4
  1452.     dc.w    $f4,$0000,$f6,$0000    ;5
  1453.     dc.w    $f8,$0000,$fa,$0000    ;6
  1454.     dc.w    $fc,$0000,$fe,$0000    ;7
  1455.  
  1456.     dc.w    $106,$0000
  1457.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1458.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1459.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1460.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1461.     dc.w    $106,$0200
  1462.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1463.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1464.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1465.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1466.  
  1467.     dc.w    $106,$2000
  1468.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1469.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1470.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1471.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1472.     dc.w    $106,$2200
  1473.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1474.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1475.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1476.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1477.  
  1478.     dc.w    $106,$4000
  1479.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1480.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1481.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1482.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1483.     dc.w    $106,$4200
  1484.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1485.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1486.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1487.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1488.  
  1489.     dc.w    $106,$6000
  1490.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1491.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1492.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1493.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1494.     dc.w    $106,$6200
  1495.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1496.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1497.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1498.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1499.  
  1500.     dc.w    $106,$8000
  1501.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1502.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1503.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1504.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1505.     dc.w    $106,$8200
  1506.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1507.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1508.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1509.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1510.  
  1511.     dc.w    $106,$a000
  1512.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1513.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1514.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1515.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1516.     dc.w    $106,$a200
  1517.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1518.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1519.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1520.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1521.  
  1522.     dc.w    $106,$c000
  1523.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1524.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1525.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1526.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1527.     dc.w    $106,$c200
  1528.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1529.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1530.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1531.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1532.  
  1533.     dc.w    $106,$e000
  1534.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1535.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1536.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1537.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1538.     dc.w    $106,$e200
  1539.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1540.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1541.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1542.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1543.  
  1544.     dc.w    $106,$1000
  1545.  
  1546.     dc.w    $080,0,$082,0
  1547. cprbuf.e
  1548.  
  1549.     dc.w    $088,$0000        ;copjmp2
  1550.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1551. cprbck
  1552. sprdat
  1553.     dc.w    $ffff,$fffe
  1554.  
  1555. palette        ds.l    256        ;palette 24-bits, far out !
  1556. paltab        ds.w    256        ;palette cycle-tabel
  1557.  
  1558.     cnop    0,2
  1559. var    ds.b    $300    ;variabelen voor routines
  1560.  
  1561.     
  1562. ;    SECTION    10,CODE_C
  1563.         endc
  1564.  
  1565. ; this is the routine-source
  1566. ;**********************************************************************
  1567.  
  1568. ;    Input:
  1569. ;    a0=variabelen tabel
  1570. ;    d0=routinfo
  1571.  
  1572. ;    Output:
  1573. ;    a0=picture
  1574.  
  1575.  
  1576. rot_vewh    equ    0;$8000
  1577. rot_vewl    equ    0;$4
  1578. rot_dpt        equ    1
  1579.  
  1580.         ifeq    rot_vewl-0
  1581. rot_shgt    equ    290+128
  1582. rot_bhgt    equ    290
  1583. rot_ystp    equ    32
  1584.         endc
  1585.         ifeq    rot_vewl-$4
  1586. rot_shgt    equ    (2*290)+128
  1587. rot_bhgt    equ    2*290
  1588. rot_ystp    equ    32*2
  1589.         endc
  1590.  
  1591.         ifeq    rot_vewh-0
  1592.         ifd    ocs
  1593. rot_swid    equ    (368+128)/8
  1594. rot_bwid    equ    368/8
  1595. rot_cen        equ    0
  1596.         endc
  1597.         ifnd    ocs
  1598. rot_swid    equ    (384+128)/8
  1599. rot_bwid    equ    384/8
  1600. rot_cen        equ    4
  1601.         endc
  1602. rot_xstp    equ    32
  1603.  
  1604.         ifeq    rot_dpt-1
  1605. rot_blit    equ    1            ;aantal blits
  1606.         endc
  1607.         ifeq    rot_dpt-2
  1608. rot_blit    equ    1            ;aantal blits
  1609.         endc
  1610.         ifeq    rot_dpt-3
  1611. rot_blit    equ    1            ;aantal blits
  1612.         endc
  1613.         ifeq    rot_dpt-4
  1614. rot_blit    equ    2            ;aantal blits
  1615.         endc
  1616.         ifeq    rot_dpt-5
  1617. rot_blit    equ    2            ;aantal blits
  1618.         endc
  1619.         ifeq    rot_dpt-6
  1620. rot_blit    equ    2            ;aantal blits
  1621.         endc
  1622.         endc
  1623.  
  1624.         ifeq    rot_vewh-$8000
  1625.         ifd    ocs
  1626. rot_swid    equ    ((368*2)+128)/8
  1627. rot_bwid    equ    (368*2)/8
  1628. rot_cen        equ    4
  1629.         endc
  1630.         ifnd    ocs
  1631. rot_swid    equ    ((384*2)+128)/8
  1632. rot_bwid    equ    (384*2)/8
  1633. rot_cen        equ    0
  1634.         endc
  1635. rot_xstp    equ    32*2
  1636.  
  1637.         ifeq    rot_dpt-1
  1638. rot_blit    equ    1            ;aantal blits
  1639.         endc
  1640.         ifeq    rot_dpt-2
  1641. rot_blit    equ    2            ;aantal blits
  1642.         endc
  1643.         ifeq    rot_dpt-3
  1644. rot_blit    equ    2            ;aantal blits
  1645.         endc
  1646.         ifeq    rot_dpt-4
  1647. rot_blit    equ    3            ;aantal blits
  1648.         endc
  1649.         endc
  1650.         
  1651.  
  1652. rot_objnum    equ    32
  1653.  
  1654.         cnop    0,8
  1655.  
  1656.     SECTION    3,CODE
  1657.     cnop    0,8
  1658. rot
  1659. rotp
  1660.     ifd    ocs
  1661.     dc.l    'ROTO'
  1662.     endc
  1663.     ifnd    ocs
  1664.     dc.l    'ROTA'
  1665.     endc
  1666.     movem.l    d1-d7/a1-a6,-(sp)
  1667.  
  1668.     lea    ($dff000).l,a6            ;hardware
  1669.     lea    rot,a5                ;prog base
  1670.     ifd    rout
  1671.     move.l    #rotc,a2
  1672.     endc
  1673.     move.l    a2,rotchp-rot(a5)
  1674.  
  1675.     move.w    #%1111111111111111,$044(a6)
  1676.     move.w    #%1111111111111111,$046(a6)
  1677.  
  1678.     move.l    d0,d7                ;info
  1679.  
  1680.     tst.l    var_bck(a0)            ;nieuwe background ?
  1681.     beq    rot.c
  1682.     move.l    var_bck(a0),a1
  1683.     clr.l    var_bck(a0)
  1684.     
  1685.     clr.l    rotbckpln-rot(a5)        ;background wissen
  1686.  
  1687.     move.l    rotchp-rot(a5),a3
  1688.     add.l    #rotpal1-rotc,a3        ;palette altijd copieren
  1689.     move.l    a3,a4
  1690.     add.l    #rotpic2-rotpic1,a4
  1691.  
  1692.     lea    pic_pal(a1),a2    ;palette
  1693.     move.w    pic_palnum(a1),d0
  1694.  
  1695. rot.g
  1696.     ifd    ocs
  1697.     move.w    (a2),(a3)+
  1698.     move.w    (a2)+,(a4)+
  1699.     endc
  1700.     ifnd    ocs
  1701.     move.l    (a2),(a3)+
  1702.     move.l    (a2)+,(a4)+
  1703.     endc
  1704.     dbra    d0,rot.g
  1705.  
  1706.     bsr    rotcln                ;alle objects uit
  1707.  
  1708.     cmp.w    #rot_bwid,pic_wid(a1)        ;size check
  1709.     bne    rot.clean
  1710.     cmp.w    #rot_bhgt,pic_hgt(a1)        ;background ?
  1711.     bne    rot.clean
  1712.     cmp.w    #rot_dpt,pic_dpt(a1)        ;background ?
  1713.     bne    rot.clean
  1714.  
  1715.     lea    pic_raw(a1),a2
  1716.     move.l    a2,rotbckpln-rot(a5)
  1717.     
  1718.     move.l    rotchp-rot(a5),a3
  1719.     add.l    #(((rot_shgt-rot_bhgt)/2*rot_swid*rot_dpt)+((rot_swid-rot_bwid)/4*2)),a3
  1720.     add.l    #rotpln1-rotc,a3
  1721.     move.l    a3,a4
  1722.     add.l    #rotpic2-rotpic1,a4
  1723.  
  1724.     move.w    #0,$64(a6)            ;bltamod
  1725.     move.w    #rot_swid-rot_bwid,$66(a6)    ;bltdmod
  1726.  
  1727.     move.w    #$09f0,$40(a6)            ;bltcon0
  1728.     move.w    #0,$42(a6)            ;bltcon1
  1729.  
  1730.     move.w    #rot_blit-1,d3            ;bck opslaan
  1731. rot.f
  1732.     move.l    a2,$50(a6)            ;bltapt
  1733.     move.l    a3,$54(a6)            ;bltdpt
  1734.     move.w    #64*(rot_bhgt/rot_blit)*rot_dpt+(rot_bwid/2),$58(a6);bltsize
  1735.     bsr    rotwit
  1736.  
  1737.     move.l    a2,$50(a6)            ;bltapt
  1738.     move.l    a4,$54(a6)            ;bltdpt
  1739.     move.w    #64*(rot_bhgt/rot_blit)*rot_dpt+(rot_bwid/2),$58(a6);bltsize
  1740.     bsr    rotwit
  1741.  
  1742.     add.l    #(rot_bhgt/rot_blit)*rot_dpt*rot_bwid,a2
  1743.     add.l    #(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a3
  1744.     add.l    #(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a4
  1745.     dbra    d3,rot.f
  1746.  
  1747.     bra    rot.c
  1748.     
  1749. rot.clean
  1750.     move.l    rotchp-rot(a5),a3
  1751.     add.l    #(((rot_shgt-rot_bhgt)/2*rot_swid*rot_dpt)+((rot_swid-rot_bwid)/4*2)),a3
  1752.     add.l    #rotpln1-rotc,a3
  1753.     move.l    a3,a4
  1754.     add.l    #rotpic2-rotpic1,a4
  1755.  
  1756.     move.w    #0,$042(a6)
  1757.     move.w    #$100+$f0,$040(a6)
  1758.  
  1759.     move.w    #rot_swid-rot_bwid,$064(a6)
  1760.     move.w    #rot_swid-rot_bwid,$066(a6)
  1761.  
  1762.     move.w    #0,$074(a6)        ;a dat
  1763.     move.l    #0,$044(a6)        ;mask
  1764.  
  1765.     move.w    #rot_blit-1,d0
  1766. rot.blit1
  1767.     move.l    a3,$054(a6)        ;destination
  1768.     move.w    #((rot_bhgt/rot_blit)*rot_dpt)*64+(rot_bwid/2),$058(a6)
  1769.     bsr    rotwit
  1770.  
  1771.     move.l    a4,$054(a6)        ;destination
  1772.     move.w    #((rot_bhgt/rot_blit)*rot_dpt)*64+(rot_bwid/2),$058(a6)
  1773.     bsr    rotwit
  1774.  
  1775.     add.l    #(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a3
  1776.     add.l    #(rot_bhgt/rot_blit)*rot_dpt*rot_swid,a4
  1777.  
  1778.     dbra    d0,rot.blit1
  1779.  
  1780. rot.c
  1781.     tst.l    var_obj1(a0)    ;object ?
  1782.     beq    rot.a
  1783.  
  1784.     move.l    var_obj1(a0),a1    ;object halen
  1785.     clr.l    var_obj1(a0)    ;en wissen
  1786.  
  1787.     move.w    pic_dpt(a1),d1    ;zelfde depth ?
  1788.     cmp.w    #rot_dpt,d1
  1789.     bgt    rot.a
  1790.     
  1791.     lea    rottab,a3        ;object tabel
  1792. rot.cb
  1793.     tst.l    obj_stat(a3)    ;object al aan ?
  1794.     bne    rot.ca
  1795.  
  1796.     move.w    pic_wid(a1),2+obj_wid(a3)
  1797.     move.w    pic_hgt(a1),2+obj_hgt(a3)
  1798.  
  1799.     move.w    pic_dpt(a1),2+obj_dpt(a3)
  1800.  
  1801.     move.w    pic_ani(a1),2+obj_anum(a3)
  1802.     move.w    var_anispd1(a0),2+obj_aspd(a3)
  1803.     move.w    var_anitel1(a0),2+obj_apos(a3)
  1804.     
  1805. ;    lea    pic_pal(a1),a2    ;palette
  1806. ;    move.w    pic_palnum(a1),d0
  1807. ;    lea    rotpal1,a0        ;palettes
  1808. ;    move.l    a0,a4
  1809. ;    add.l    #rotpic2-rotpic1,a4
  1810. ;rot.i
  1811. ;    move.w    (a2),(a0)+
  1812. ;    move.w    (a2)+,(a4)+
  1813. ;    dbra    d0,rot.i        ;a2 = source plane !
  1814.  
  1815.     lea    pic_raw(a1),a2    ;raw
  1816.     move.l    a2,obj_raw(a3)    ;plane
  1817.  
  1818.     move.l    obj_wid(a3),d0
  1819.     move.l    obj_hgt(a3),d1
  1820.     muls    d1,d0
  1821.     move.l    obj_dpt(a3),d1
  1822.     muls    d1,d0
  1823.     add.l    d0,a2
  1824.     move.l    a2,obj_rawm(a3)    ;plane mask
  1825.  
  1826.     move.l    #1,obj_stat(a3)    ;object aan
  1827.  
  1828.     clr.l    d1        ;info ombouwen
  1829.     move.w    d7,d1
  1830.     divs    #16384,d1
  1831.     and.l    #$ffff,d1
  1832.     move.l    d1,d6        ;sinusspeed (4)
  1833.     muls    #16384,d1
  1834.     sub.w    d1,d7
  1835.  
  1836.     move.w    d7,d1
  1837.     divs    #2048,d1
  1838.     and.l    #$ffff,d1
  1839.     move.l    d1,d5        ;sinussize (8)
  1840.     muls    #2048,d1
  1841.     sub.w    d1,d7
  1842.  
  1843.     move.w    d7,d1
  1844.     divs    #64,d1
  1845.     and.l    #$ffff,d1
  1846.     move.l    d1,d4        ;sinustype (32)
  1847.     muls    #64,d1
  1848.     sub.w    d1,d7
  1849.  
  1850.     move.w    d7,d1
  1851.     divs    #9,d1
  1852.     and.l    #$ffff,d1
  1853.     move.l    d1,d3        ;sinuscentre (64)
  1854.     muls    #9,d1
  1855.     sub.w    d1,d7
  1856.  
  1857.     muls    #sintab_l,d4    ;sinustype
  1858.     lea    sintab,a4
  1859.     add.l    d4,a4
  1860.     lea    obj_xsin(a3),a2
  1861.     move.w    #sintab_l-1,d0
  1862. rot.d
  1863.     move.b    (a4)+,(a2)+
  1864.     dbra    d0,rot.d
  1865.     
  1866.     muls    #4,d6
  1867.     add.l    #1,d6
  1868.     move.l    obj_xstp(a3),d0    ;sinusspeed
  1869.     muls    d6,d0
  1870.     move.l    d0,obj_xstp(a3)
  1871.     move.l    obj_ystp(a3),d0    ;sinuspeed
  1872.     muls    d6,d0
  1873.     move.l    d0,obj_ystp(a3)
  1874.  
  1875.     lea    rotsiztab,a4
  1876.     lsl.l    #2,d5        ;*4
  1877.     move.l    (a4,d5),d5        ;sinusize
  1878.     move.l    d5,obj_xsiz(a3)
  1879.     move.l    d5,obj_ysiz(a3)
  1880.  
  1881.     muls    #rot_xstp,d3    ;sinucentre x
  1882.     add.l    d3,obj_ymid(a3)
  1883.     muls    #rot_ystp,d7    ;sinucentre y
  1884.     add.l    d7,obj_xmid(a3)
  1885.  
  1886.     bra    rot.a
  1887.     
  1888. rot.ca
  1889.     add.l    #rottab_l,a3
  1890.     lea    rottab.e,a4
  1891.     cmp.l    a3,a4
  1892.     bne    rot.cb
  1893.  
  1894. rot.a
  1895.     bsr    rotrem
  1896.     bsr    rotset
  1897. rot.end
  1898.     tst.l    rotbckpln-rot(a5)    ;background wissen
  1899.     beq    rot.nobuf
  1900.  
  1901.     move.l    rotchp-rot(a5),a0
  1902.     add.l    #rotpic1-rotc,a0
  1903.     add.l    rotbuf-rot(a5),a0
  1904.     eor.l    #rotpln2-rotpln1,rotbuf-rot(a5)    ;double playfield
  1905.     bra    rot.buf
  1906. rot.nobuf
  1907.     move.l    rotchp-rot(a5),a0
  1908.     add.l    #rotpic1-rotc,a0
  1909.     move.l    rotbuf-rot(a5),d7
  1910. ;    eor.l    #rotpln2-rotpln1,d7
  1911.     add.l    d7,a0
  1912. rot.buf
  1913.     movem.l    (sp)+,d1-d7/a1-a6
  1914.     rts
  1915.  
  1916. rotset
  1917.     movem.l    d0-d7/a0-a6,-(sp)
  1918.     lea    (rottab.e-rottab_l),a0
  1919.     move.w    #rot_objnum-1,d0
  1920. rotset.bb
  1921.     bsr    rotobj            ;set object op scherm
  1922.     sub.l    #rottab_l,a0
  1923.     dbra    d0,rotset.bb
  1924.     movem.l    (sp)+,d0-d7/a0-a6
  1925.     rts
  1926.     
  1927. rotrem
  1928.     movem.l    d0-d7/a0-a6,-(sp)
  1929.     tst.l    rotbckpln-rot(a5)
  1930.     beq    rotrem.a
  1931.     lea    rottab,a0
  1932.     move.w    #rot_objnum-1,d0
  1933. rotrem.bb
  1934.     bsr    rotbck        ;remove object op scherm
  1935.     add.l    #rottab_l,a0
  1936.     dbra    d0,rotrem.bb
  1937. rotrem.a
  1938.     movem.l    (sp)+,d0-d7/a0-a6
  1939.     rts
  1940.     
  1941. rotcln
  1942.     movem.l    d0-d7/a0-a6,-(sp)
  1943.     lea    rottab,a0
  1944.     move.w    #rot_objnum-1,d0
  1945. rotcln.bb
  1946.     clr.l    obj_stat(a0)
  1947.     add.l    #rottab_l,a0
  1948.     dbra    d0,rotcln.bb
  1949.     movem.l    (sp)+,d0-d7/a0-a6
  1950.     rts
  1951.     
  1952. rotobj
  1953.     movem.l    d0-d7/a0-a6,-(sp)    ;a0=rotobj info
  1954.  
  1955.     tst.l    obj_stat(a0)
  1956.     beq    rotobj.bb
  1957.  
  1958.     bsr    rotsin
  1959.  
  1960.     move.l    obj_xpos(a0),d0    ;d0=xpos
  1961.     move.l    obj_ypos(a0),d1    ;d1=ypos
  1962.     
  1963.     move.l    rotchp-rot(a5),a1
  1964.     add.l    #rotpln1-rotc,a1
  1965.     add.l    rotbuf-rot(a5),a1
  1966.  
  1967.     move.l    d0,d2
  1968.     lsr.l    #4,d0        ;ruwe xpos
  1969.     lsl.l    #1,d0
  1970.     add.l    d0,a1
  1971.  
  1972.     muls    #rot_swid*rot_dpt,d1    ;ypos
  1973.     add.l    d1,a1
  1974.  
  1975.     move.l    obj_wid(a0),d6    ;bltsize berekenen
  1976.     lsr.w    #1,d6        ;/2
  1977.     move.l    obj_hgt(a0),d5
  1978.     muls    2+obj_dpt(a0),d5
  1979.     lsl.w    #6,d5        ;*64 voor bltsize
  1980.     add.w    d5,d6
  1981.     
  1982.     lsl.l    #3,d0        ;bitscroll verder bereken
  1983.     sub.l    d0,d2
  1984.     lsl.w    #8,d2
  1985.     lsl.w    #4,d2
  1986.     move.w    d2,$42(a6)        ;bltcon1
  1987.     add.w    #$0fca,d2
  1988.     move.w    d2,$40(a6)        ;bltcon0
  1989.  
  1990. rotobj.da
  1991.     move.l    obj_apos(a0),d7
  1992.     move.l    obj_aspd(a0),d5
  1993.     divs    d5,d7
  1994.     and.l    #$ffff,d7
  1995.     cmp.w    2+obj_anum(a0),d7
  1996.     blt    rotobj.ea
  1997.     clr.l    obj_apos(a0)
  1998.     bra    rotobj.da
  1999. rotobj.ea
  2000.     move.l    obj_wid(a0),d5    ;breedte
  2001.     muls    2+obj_hgt(a0),d5    ;hoogte
  2002.     muls    2+obj_dpt(a0),d5    ;plnnumes
  2003.     muls    d7,d5        ;anipos
  2004.     lsl.l    #1,d5        ;+mask
  2005.     
  2006.     move.l    obj_raw(a0),a4    ;obj picture
  2007.     add.l    d5,a4
  2008.     move.l    obj_rawm(a0),a3
  2009.     add.l    d5,a3
  2010.  
  2011.     add.l    #1,obj_apos(a0)
  2012.     
  2013.     move.l    #rot_swid,d7
  2014.     sub.l    obj_wid(a0),d7
  2015.     move.w    d7,$60(a6)        ;bltcmod
  2016.     move.w    d7,$66(a6)        ;bltdmod
  2017.  
  2018.     move.w    #0,$62(a6)        ;bltbmod
  2019.     move.w    #0,$64(a6)        ;bltamod
  2020.  
  2021. rotobj.a
  2022.     move.l    a1,$48(a6)        ;bltcpt
  2023.     move.l    a4,$4c(a6)        ;bltbpt
  2024.     move.l    a3,$50(a6)        ;bltapt
  2025.     move.l    a1,$54(a6)        ;bltdpt
  2026.  
  2027.     move.w    d6,$58(a6)        ;bltsize
  2028.     bsr    rotwit
  2029.  
  2030. rotobj.bb
  2031.     movem.l    (sp)+,d0-d7/a0-a6
  2032.     rts
  2033.  
  2034. rotbck
  2035.     movem.l    d0-d7/a0-a6,-(sp)
  2036.  
  2037.     tst.l    obj_stat(a0)
  2038.     beq    rotbck.bb
  2039.     
  2040.     move.l    rotbckpln-rot(a5),a4    ;source
  2041.     sub.l    #(((rot_shgt-rot_bhgt)/2)*rot_bwid*rot_dpt)+((rot_swid-rot_bwid)/4*2),a4
  2042.     move.l    rotchp-rot(a5),a1
  2043.     add.l    #rotpln1-rotc,a1
  2044.  
  2045.     add.l    rotbuf-rot(a5),a1    ;destination
  2046.  
  2047.     move.l    obj_xold(a0),d0
  2048.     lsr.l    #4,d0
  2049.     lsl.l    #1,d0
  2050.     add.l    d0,a4
  2051.     add.l    d0,a1
  2052.     move.l    obj_yold(a0),d0
  2053.     move.l    d0,d1
  2054.     muls    #rot_bwid*rot_dpt,d0
  2055.     add.l    d0,a4
  2056.     muls    #rot_swid*rot_dpt,d1
  2057.     add.l    d1,a1
  2058.     
  2059.     move.l    #rot_bwid,d7
  2060.     sub.l    obj_wid(a0),d7
  2061.     move.w    d7,$64(a6)        ;bltamod
  2062.  
  2063.     move.l    #rot_swid,d7
  2064.     sub.l    obj_wid(a0),d7
  2065.     move.w    d7,$66(a6)        ;bltdmod
  2066.  
  2067.     clr.w    $42(a6)        ;bltcon1
  2068.     move.w    #$09f0,$40(a6)    ;bltcon0
  2069.  
  2070.     move.l    obj_wid(a0),d6    ;bltsize berekenen
  2071.     lsr.w    #1,d6        ;/2
  2072.     move.l    obj_hgt(a0),d5
  2073.     muls    2+obj_dpt(a0),d5
  2074.     lsl.w    #6,d5        ;*64
  2075.     add.w    d5,d6
  2076.     
  2077. rotbck.c
  2078.     move.l    a4,$50(a6)        ;bltapt
  2079.     move.l    a1,$54(a6)        ;bltdpt
  2080.  
  2081.     move.w    d6,$58(a6)        ;bltsize
  2082.     bsr    rotwit
  2083.  
  2084. rotbck.bb
  2085.     movem.l    (sp)+,d0-d7/a0-a6
  2086.     rts
  2087.  
  2088. rotwit
  2089. rotwit.a
  2090.     btst    #6,($dff002).l
  2091.     bne    rotwit.a
  2092.     rts
  2093.     
  2094. rotsin
  2095.     movem.l    d0-d7/a0-a6,-(sp)
  2096.  
  2097.     move.l    obj_xsin(a0),d2
  2098.     move.l    obj_ysin(a0),d3
  2099.  
  2100.     lea    dat.sin,a1
  2101.  
  2102.     move.w    (a1,d2),d0        ;x sin pos
  2103.     ext.l    d0
  2104.     move.l    obj_xsiz(a0),d4
  2105.     divs    d4,d0        ;x circel grote
  2106.     add.l    obj_xmid(a0),d0    ;x centrum pos
  2107.     and.l    #$ffff,d0
  2108.  
  2109.     add.l    obj_xstp(a0),d2    ;x sin stap grote
  2110.  
  2111.     cmp.l    obj_xend(a0),d2
  2112.     blt    rotsin.aa
  2113.     move.l    obj_xstr(a0),d2
  2114. rotsin.aa
  2115.     cmp.l    obj_xstr(a0),d2
  2116.     bge    rotsin.ab
  2117.     move.l    obj_xend(a0),d2
  2118. rotsin.ab
  2119.  
  2120.     move.w    (a1,d3),d1        ;y sin pos
  2121.     ext.l    d1
  2122.     move.l    obj_ysiz(a0),d4    ;y circel grote
  2123.     divs    d4,d1        ;y circel grote
  2124.     add.l    obj_ymid(a0),d1    ;y centrum pos
  2125.     and.l    #$ffff,d1
  2126.  
  2127.     add.l    obj_ystp(a0),d3    ;y sin stap grote
  2128.  
  2129.     cmp.l    obj_yend(a0),d3
  2130.     blt    rotsin.ba
  2131.     move.l    obj_ystr(a0),d3
  2132. rotsin.ba
  2133.     cmp.l    obj_ystr(a0),d3
  2134.     bge    rotsin.bb
  2135.     move.l    obj_yend(a0),d3
  2136. rotsin.bb
  2137.     move.l    d2,obj_xsin(a0)
  2138.     move.l    d3,obj_ysin(a0)
  2139.  
  2140.     move.l    obj_wid(a0),d2    ;x centreren
  2141.     sub.l    #2,d2        ;- blitter ruimte
  2142.     lsl.l    #2,d2
  2143.     sub.l    d2,d0
  2144.     move.l    obj_hgt(a0),d2    ;y centreren
  2145.     lsr.l    #1,d2
  2146.     sub.l    d2,d1
  2147.  
  2148.     cmp.l    #0,d0        ;buiten scherm ?
  2149.     bge    rotsin.za
  2150.     clr.l    d0
  2151. rotsin.za
  2152.     move.l    #rot_swid*8,d7
  2153.     move.l    obj_wid(a0),d6
  2154.     lsl.l    #3,d6        ;*8
  2155.     sub.l    d6,d7
  2156.     cmp.l    d7,d0
  2157.     ble    rotsin.zb
  2158.     move.l    d7,d0
  2159. rotsin.zb
  2160.     
  2161.     cmp.l    #0,d1
  2162.     bge    rotsin.zc
  2163.     clr.l    d1
  2164. rotsin.zc
  2165.     move.l    #rot_shgt,d7
  2166.     sub.l    obj_hgt(a0),d7
  2167.     cmp.l    d7,d1
  2168.     ble    rotsin.zd
  2169.     move.l    d7,d1
  2170. rotsin.zd
  2171.     
  2172.     move.l    obj_xpos(a0),obj_xold(a0)    ;oldpos
  2173.     move.l    obj_ypos(a0),obj_yold(a0)
  2174.  
  2175.     move.l    d0,obj_xpos(a0)
  2176.     move.l    d1,obj_ypos(a0)
  2177. rotsin.z
  2178.     movem.l    (sp)+,d0-d7/a0-a6
  2179.     rts
  2180.  
  2181. rotchp        dc.l    0
  2182. rotbuf        dc.l    0
  2183. rotbckpln    dc.l    0
  2184.  
  2185. obj_xpos    equ    $0
  2186. obj_ypos    equ    $4
  2187. obj_apos    equ    $8
  2188. obj_aspd    equ    $0c
  2189. obj_anum    equ    $10
  2190. obj_wid    equ    $14
  2191. obj_hgt    equ    $18
  2192. obj_raw    equ    $1c
  2193. obj_rawm    equ    $20
  2194. obj_dpt    equ    $24
  2195.  
  2196. obj_xold    equ    $28
  2197. obj_yold    equ    $2c
  2198. obj_xsin    equ    $30
  2199. obj_xsiz    equ    $34
  2200. obj_xmid    equ    $38
  2201. obj_xstp    equ    $3c
  2202. obj_xstr    equ    $40
  2203. obj_xend    equ    $44
  2204. obj_ysin    equ    $48
  2205. obj_ysiz    equ    $4c
  2206. obj_ymid    equ    $50
  2207. obj_ystp    equ    $54
  2208. obj_ystr    equ    $58
  2209. obj_yend    equ    $5c
  2210. obj_stat    equ    $60
  2211.  
  2212.  
  2213. ;        x-pos    y-pos    animpos    animspeed    animnum
  2214. rottab
  2215.     dc.l    0,    0,    0,    0,    0
  2216.  
  2217. ;        width    hight    picture    picturemask
  2218.     dc.l    0,    0,    0,    0
  2219.  
  2220. ;        plnnum    xold    yold
  2221.     dc.l    0,    0,    0
  2222.  
  2223. ;        xsin    xsiz    xmid    xstp    xstr    xend
  2224.     dc.l    0,    500,    256,    2,    0,    720*2
  2225.  
  2226. ;        ysin    ysiz    ymid    ystp    ystr    yend
  2227.     dc.l    180*2,    500,    192,    2,    0,    720*2
  2228.  
  2229. ;        status
  2230.     dc.l    0
  2231.  
  2232. rottab.t
  2233. rottab_l    equ    rottab.t-rottab
  2234.  
  2235.     rept    rot_objnum-1
  2236.     dc.l    0,    0,    0,    0,    0
  2237.     dc.l    0,    0,    0,    0
  2238.     dc.l    0,    0,    0
  2239.     dc.l    0,    500,    256,    2,    0,    720*2
  2240.     dc.l    180*2,    500,    192,    6,    0,    720*2
  2241.     dc.l    0
  2242.     endr
  2243. rottab.e
  2244.  
  2245. rotsiztab
  2246.     ifeq    rot_vewh-0
  2247.     dc.l    1300/1,1040/1,832/1,665/1
  2248.     dc.l    532/1,425/1,340/1,272/1        ;1,25
  2249.     endc
  2250.     ifeq    rot_vewh-$8000
  2251.     dc.l    1300/2,1040/2,832/2,665/2
  2252.     dc.l    532/2,425/2,340/2,272/2        ;1,25
  2253.     endc
  2254.  
  2255. sintab
  2256.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    1
  2257.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2258. sintab.t
  2259. sintab_l    equ    sintab.t-sintab
  2260.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,1440    ;O    2
  2261.     dc.l    360,1300,(rot_shgt/2)-(rot_ystp*3),2,0,1440
  2262.  
  2263.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),4,0,1440    ;8    3
  2264.     dc.l    360,1300,(rot_shgt/2)-(rot_ystp*3),2,0,1440
  2265.  
  2266.     dc.l    360,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,1440    ;(X)    4
  2267.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),4,0,1440
  2268.  
  2269.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),4,0,1440    ;complex    5
  2270.     dc.l    360,1300,(rot_shgt/2)-(rot_ystp*3),6,0,1440
  2271.  
  2272.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;|    6
  2273.     dc.l    360,1300,(rot_shgt/2)-(rot_ystp*3),2,0,1440
  2274.  
  2275.     dc.l    360,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,1440    ;-    7
  2276.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2277.  
  2278.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;/\ Tip    8
  2279.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),2,720,1440
  2280.  
  2281.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;\/ Tip    9
  2282.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),2,0,720
  2283.  
  2284.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,720,1440    ;< Tip    10
  2285.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2286.  
  2287.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),2,0,720    ;> Tip    11
  2288.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,720
  2289.  
  2290.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    12
  2291.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2292.  
  2293.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    13
  2294.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2295.  
  2296.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    14
  2297.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2298.  
  2299.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    15
  2300.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2301.  
  2302.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    16
  2303.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2304.  
  2305.  
  2306.  
  2307.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.    17
  2308.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2309.  
  2310.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),-2,0,1440    ;O    18
  2311.     dc.l    360,1300,(rot_shgt/2)-(rot_ystp*3),-2,0,1440
  2312.  
  2313.     rept    32-18
  2314.     dc.l    000,1300,(rot_swid*4)-(rot_xstp*4)+(rot_cen*8),0,0,1440    ;.
  2315.     dc.l    000,1300,(rot_shgt/2)-(rot_ystp*3),0,0,1440
  2316.     endr
  2317. sintab.e
  2318.  
  2319.  
  2320.     cnop    0,2
  2321. dat.sin    incbin    'w:bin/objsin.bin'
  2322. dat.sin.e
  2323.  
  2324. ;pic_wid    equ    4        ;wide in bytes
  2325. ;pic_hgt    equ    6        ;hoogte
  2326. ;pic_dpt    equ    8        ;number planes
  2327. ;pic_ani    equ    10        ;aantal effes (anim)
  2328. ;pic_vew    equ    12        ;viewmode
  2329. ;pic_cycstr    equ    14        ;cycle start (*4)
  2330. ;pic_cycend    equ    15        ;cycle end (*4)
  2331. ;pic_cycspd    equ    16        ;cycle speed (*4)
  2332. ;pic_cycadd    equ    17        ;cycle add (*4)
  2333. ;pic_palnum    equ    30        ;aantal kleuren
  2334. ;pic_pal    equ    32        ;palette start
  2335. ;pic_palsiz    equ    256*2        ;vaste palette size
  2336. ;pic_raw    equ    pic_pal+pic_palsiz    ;palette start
  2337.  
  2338. rotp.e
  2339.     SECTION    4,CODE_C
  2340.     cnop    0,8
  2341. rotc
  2342.     ifd    ocs
  2343.     dc.l    'ROTO'
  2344.     endc
  2345.     ifnd    ocs
  2346.     dc.l    'ROTA'
  2347.     endc
  2348.     rts
  2349.     cnop    0,8
  2350.  
  2351. rotpic1
  2352.     dc.l    'PICT'
  2353.     dc.w    rot_swid,rot_shgt,rot_dpt,1,rot_vewh+rot_vewl
  2354.  
  2355.     ifd    ocs
  2356.     ds.b    4*4
  2357.     endc
  2358.     ifnd    ocs
  2359.     ds.b    8*4+16
  2360.     endc
  2361.     
  2362.     ifeq    1-rot_dpt
  2363.     dc.w    2-1
  2364. rotpal1
  2365.     ifd    ocs
  2366.     dc.w    $000,$fff
  2367.     ds.w    256-2
  2368.     endc
  2369.     ifnd    ocs
  2370.     dc.w    $000,0,$fff,0
  2371.     ds.l    256-2
  2372.     endc
  2373.     endc
  2374.  
  2375.     ifeq    2-rot_dpt
  2376.     dc.w    4-1
  2377. rotpal1
  2378.     ifd    ocs
  2379.     dc.w    $000,$555,$aaa,$fff
  2380.     ds.w    256-4
  2381.     endc
  2382.     ifnd    ocs
  2383.     dc.w    $000,0,$555,0,$aaa,0,$fff,0
  2384.     ds.l    256-4
  2385.     endc
  2386.     endc
  2387.  
  2388.     ifeq    3-rot_dpt
  2389.     dc.w    8-1
  2390. rotpal1
  2391.     ifd    ocs
  2392.     dc.w    $000,$333,$555,$777,$999,$bbb,$ddd,$fff
  2393.     ds.w    256-8
  2394.     endc
  2395.     ifnd    ocs
  2396.     dc.w    $000,0,$333,0,$555,0,$777,0,$999,0,$bbb,0,$ddd,0,$fff,0
  2397.     ds.l    256-8
  2398.     endc
  2399.     endc
  2400.  
  2401.     ifeq    4-rot_dpt
  2402.     dc.w    16-1
  2403. rotpal1
  2404.     ifd    ocs
  2405.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  2406.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  2407.     ds.w    256-16
  2408.     endc
  2409.     ifnd    ocs
  2410.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  2411.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  2412.     ds.l    256-16
  2413.     endc
  2414.     endc
  2415.  
  2416.     ifeq    5-rot_dpt
  2417.     dc.w    32-1
  2418. rotpal1
  2419.     ifd    ocs
  2420.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  2421.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  2422.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  2423.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  2424.     ds.w    256-32
  2425.     endc
  2426.     ifnd    ocs
  2427.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  2428.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  2429.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  2430.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  2431.     ds.l    256-32
  2432.     endc
  2433.     endc
  2434.  
  2435.     ifeq    6-rot_dpt
  2436.     dc.w    32-1
  2437. rotpal1
  2438.     ifd    ocs
  2439.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  2440.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  2441.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  2442.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  2443.     ds.w    256-32
  2444.     endc
  2445.     ifnd    ocs
  2446.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  2447.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  2448.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  2449.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  2450.     ds.l    256-32
  2451.     endc
  2452.     endc
  2453.  
  2454. rotpln1
  2455.     ds.b    rot_dpt*rot_swid*rot_shgt
  2456.  
  2457.     cnop    0,8
  2458. rotpic2
  2459.     dc.l    'PICT'
  2460.     dc.w    rot_swid,rot_shgt,rot_dpt,1,rot_vewh+rot_vewl
  2461.  
  2462.     ifd    ocs
  2463.     ds.b    4*4
  2464.     endc
  2465.     ifnd    ocs
  2466.     ds.b    8*4+16
  2467.     endc
  2468.     
  2469.     ifeq    1-rot_dpt
  2470.     dc.w    2-1
  2471. rotpal2
  2472.     ifd    ocs
  2473.     dc.w    $000,$fff
  2474.     ds.w    256-2
  2475.     endc
  2476.     ifnd    ocs
  2477.     dc.w    $000,0,$fff,0
  2478.     ds.l    256-2
  2479.     endc
  2480.     endc
  2481.  
  2482.     ifeq    2-rot_dpt
  2483.     dc.w    4-1
  2484. rotpal2
  2485.     ifd    ocs
  2486.     dc.w    $000,$555,$aaa,$fff
  2487.     ds.w    256-4
  2488.     endc
  2489.     ifnd    ocs
  2490.     dc.w    $000,0,$555,0,$aaa,0,$fff,0
  2491.     ds.l    256-4
  2492.     endc
  2493.     endc
  2494.  
  2495.     ifeq    3-rot_dpt
  2496.     dc.w    8-1
  2497. rotpal2
  2498.     ifd    ocs
  2499.     dc.w    $000,$333,$555,$777,$999,$bbb,$ddd,$fff
  2500.     ds.w    256-8
  2501.     endc
  2502.     ifnd    ocs
  2503.     dc.w    $000,0,$333,0,$555,0,$777,0,$999,0,$bbb,0,$ddd,0,$fff,0
  2504.     ds.l    256-8
  2505.     endc
  2506.     endc
  2507.  
  2508.     ifeq    4-rot_dpt
  2509.     dc.w    16-1
  2510. rotpal2
  2511.     ifd    ocs
  2512.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  2513.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  2514.     ds.w    256-16
  2515.     endc
  2516.     ifnd    ocs
  2517.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  2518.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  2519.     ds.l    256-16
  2520.     endc
  2521.     endc
  2522.  
  2523.     ifeq    5-rot_dpt
  2524.     dc.w    32-1
  2525. rotpal2
  2526.     ifd    ocs
  2527.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  2528.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  2529.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  2530.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  2531.     ds.w    256-32
  2532.     endc
  2533.     ifnd    ocs
  2534.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  2535.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  2536.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  2537.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  2538.     ds.l    256-32
  2539.     endc
  2540.     endc
  2541.  
  2542.     ifeq    6-rot_dpt
  2543.     dc.w    32-1
  2544. rotpal2
  2545.     ifd    ocs
  2546.     dc.w    $000,$111,$222,$333,$444,$555,$666,$777
  2547.     dc.w    $888,$999,$aaa,$bbb,$ccc,$ddd,$eee,$fff
  2548.     dc.w    $00,$11,$22,$33,$44,$55,$66,$77
  2549.     dc.w    $88,$99,$aa,$bb,$cc,$dd,$ee,$ff
  2550.     ds.w    256-32
  2551.     endc
  2552.     ifnd    ocs
  2553.     dc.w    $000,0,$111,0,$222,0,$333,0,$444,0,$555,0,$666,0,$777,0
  2554.     dc.w    $888,0,$999,0,$aaa,0,$bbb,0,$ccc,0,$ddd,0,$eee,0,$fff,0
  2555.     dc.w    $00,0,$11,0,$22,0,$33,0,$44,0,$55,0,$66,0,$77,0
  2556.     dc.w    $88,0,$99,0,$aa,0,$bb,0,$cc,0,$dd,0,$ee,0,$ff,0
  2557.     ds.l    256-32
  2558.     endc
  2559.     endc
  2560.  
  2561. rotpln2
  2562.     ds.b    rot_dpt*rot_swid*rot_shgt
  2563.  
  2564. rotc.e
  2565. rot.e
  2566.  
  2567. ;**********************************************************************
  2568.  
  2569. ;and here are the incbin-files....
  2570.  
  2571.         ifd    rout
  2572.         cnop    0,8
  2573. rotincobj
  2574.         ifd    ocs
  2575.         incbin    'w:effect/trianglef32b_2.obj'
  2576.         endc
  2577.         ifnd    ocs
  2578.         incbin    'w:effectaga/trianglef32b_2.obj'
  2579.         endc
  2580.         cnop    0,8
  2581. rotincbck
  2582.         ifd    ocs
  2583.         incbin    'w:effect/creator_l2.bck'
  2584.         endc
  2585.         ifnd    ocs
  2586.         incbin    'w:effectaga/creator_l2.bck'
  2587.         endc
  2588.         endc
  2589.         
  2590.  
  2591.